(* Should this be polymorphic like Env? How exactly? Probably can't *)
(* (It would be nice to be able to write an apply fn that changed elt type) *)
(* Lists you give need not be sorted; lists we return will be. *)
signature ORDERED_SET =
sig
   structure Element : ORDERED_SET_ELEMENT
   type set
   val make : Element.element list -> set 
   val unmake : set -> Element.element list
   val member : set * Element.element -> bool
   val subset : set * set -> bool
   val le : set * set -> bool		(* elementwise *)
   val eq : set * set -> bool		(* using antisymmetry of Element.le *)
   val add : set * Element.element -> set
   val addList : set * Element.element list -> set 
   val union : set * set -> set
   val bigUnion : set list -> set
   val intersection : set * set -> set
   val setString : set -> string
   val subsetSatisfying : set * (Element.element -> bool) -> set
   val minus : set * set -> set
   val map : set * (Element.element -> Element.element) -> set
end
